#include "CScreenForm.h"
#include "CScreenConsole.h"

BEGIN_BERS

//////////////////////////////////////////////////////////////////////////
//#define ACTION_ERROR_NULL_PARENT return;

//////////////////////////////////////////////////////////////////////////
CScreenForm::CScreenForm(cSize_a x, cSize_a y, const char Char):
CColorTextForm(x,y,Char),
myParent(NULL_PTR),
myVisible(VISIBLE),
myActive(ACTIVE_OBJ)
{}
//////////////////////////////////////////////////////////////////////////

void CScreenForm::Init(CScreenConsole& ScreeenOwner)  { myParent=&ScreeenOwner; }

void CScreenForm::UpDate()
{
    if(myParent==NULL_PTR) 
    {
        return; 
    }
    if(IsActive()==ACTIVE_OBJ) 
    {
        myParent->UpDate(*this); 
    }
}

void CScreenForm::SetNewCoord( const SCoord& newCoord) { myCoord=newCoord; UpDate(); }
SCoord CScreenForm::GetCoord()const                    { return myCoord; }  

void CScreenForm::Move(const cInt x, cInt y) { myCoord.x=myCoord.x+x;  myCoord.y=myCoord.y+y; UpDate(); }

int CScreenForm::IsVisible()    { return myVisible; }
void CScreenForm::Visible()     {  if( myVisible!=VISIBLE) {  myVisible=VISIBLE; UpDate();  }}
void CScreenForm::Hide()        { if( myVisible!=HIDE)     {  myVisible=HIDE; UpDate();     }}

int CScreenForm::IsActive()     { return myActive;        }
void CScreenForm::SetActive()   { myActive=ACTIVE_OBJ;    }
void CScreenForm::SetNoActive() { myActive=NOT_ACTIVE_OBJ;}

//////////////////////////////////////////////////////////////////////////

void CScreenForm::ClearOptions() { CColorTextForm::ClearOptions(); myCoord.Clear(); myVisible=VISIBLE; myActive=ACTIVE_OBJ; UpDate(); }

void CScreenForm::ClearAll()                             { CColorTextForm::ClearAll();                UpDate(); }
void CScreenForm::ClearMatrix()                          { CColorTextForm::ClearMatrix();             UpDate(); }
void CScreenForm::Cls()                                  { CColorTextForm::Cls();                     UpDate(); }
void CScreenForm::ReSize(cSize_a nSizeX, cSize_a nSizeY) { CColorTextForm::ReSize(nSizeX, nSizeY);    UpDate(); }
void CScreenForm::FillCharacter( const char charFill)    { CColorTextForm::FillCharacter(charFill);   UpDate(); }
void CScreenForm::FillBGColor( cInt bgColor)             { CColorTextForm::FillBGColor(bgColor);      UpDate(); }
void CScreenForm::FillTextColor( cInt textColor)         { CColorTextForm::FillTextColor(textColor);  UpDate(); }
void CScreenForm::FillRandom()                           { CColorTextForm::FillRandom();              UpDate(); }
void CScreenForm::PrintText(const std::string& content)  { CColorTextForm::PrintText(content);        UpDate(); }
void CScreenForm::PrintText(const char* content)         { CColorTextForm::PrintText(content);        UpDate(); }
void CScreenForm::PrintText(const CScreenForm& content)  { CColorTextForm::PrintText(content.GetCoord(), content ); UpDate(); }


END_BERS